// -*- coding: utf-8 -*-
#ifndef FILECOMPARATOR_H
#define FILECOMPARATOR_H

#include <QObject>
#include <QString>
#include <QFile>
#include <QTextStream>
#include <QRegularExpression>

class FileComparator : public QObject
{
    Q_OBJECT
public:
    explicit FileComparator(QObject *parent = nullptr);
    
    // 比较两个文件
    bool compareFiles(const QString &leftFilePath, const QString &rightFilePath);
    
    // 获取文件内容差异
    QList<QPair<int, QString>> getDifferences(const QString &leftContent, const QString &rightContent);
    
    // 设置左侧最上层包名
    void setLeftTopLevelPackage(const QString &packageName);
    
    // 设置右侧最上层包名
    void setRightTopLevelPackage(const QString &packageName);

private:
    // 特殊处理Java/Kt文件，处理包名和import
    QString preprocessJavaKtFile(const QString &filePath, bool isLeftFile);
    
    // 从文件路径解析包名
    QString extractPackageFromPath(const QString &filePath);
    
    // 比较两个文本内容
    bool compareTextContent(const QString &leftContent, const QString &rightContent);
    
    // 左侧最上层包名
    QString m_leftTopLevelPackage;
    // 右侧最上层包名
    QString m_rightTopLevelPackage;
};

#endif // FILECOMPARATOR_H